Many hardware and software applications use data compression to reduce storage and memory capacity, and to reduce network and input/output bandwidth. Huffman encoding is often used to compress data, for example in the Deflate (gzip) standard. Huffman codes are variable length codes in which most frequent data items are encoded with fewer bits. Dynamic Huffman codes are custom codes constructed on the fly based on the frequency of data items.
Creating a dynamic Huffman (DH) table in hardware is a time and area consuming process. For instance, conventional DH based compression requires software intervention involvement, or a complicated mapping of the Deflate software algorithms to hardware. These may lead to a performance or compression ratio or silicon area penalty.
As a result, many hardware implementations choose to use the fixed Huffman (FH) method instead of the dynamic Huffman (DH) method. The disadvantage of FH is less compression compared to the DH.
Therefore, a simplified and fast technique for creating a dynamic Huffman table in hardware would be desirable.